package Lab02;

import java.util.Scanner;
import p1.aplic.cartas.*;

/**
 * Uma versao inicial do jogo 21.
 * 
 * @author Delano Oliveira, Raissa Sarmento
 * @version 1.0 23/09/2008
 * 
 */

public class VinteUm3 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		Baralho baralho = new Baralho();
		baralho.baralhar();
		Mao maoJogador = new Mao();
		Mao maoMesa = new Mao();
		maoJogador.adicionar(baralho.pegaCarta());
		maoMesa.adicionar(baralho.pegaCarta());
		System.out
				.println("Carta inicial do jogador: " + maoJogador.toString());
		System.out.println("Carta inicial da mesa: " + maoMesa.toString());
		while (true) {
			System.out
					.print("Devo incluir mais uma carta(digite t para terminar)? ");
			String novaCarta = input.nextLine();
			if (!novaCarta.equals("t")) {

				maoJogador.adicionar(baralho.pegaCarta());

				if (maoJogador.valor() >= 21) {
					break;
				}

				if (maoMesa.valor() < 17) {

					maoMesa.adicionar(baralho.pegaCarta());
					if (maoMesa.valor() >= 21) {
						break;
					}

				}
			} else {
				break;
			}

			System.out.println("Mao do jogador: " + maoJogador.toString());
			System.out.println("Pontuacao do jogador ate o momento: "
					+ maoJogador.valor());

			System.out.println("Quantidade de cartas da mesa: "
					+ maoMesa.valor());
		}

		if (maoJogador.valor() < 21) {
			while (maoMesa.valor() < 17) {
				maoMesa.adicionar(baralho.pegaCarta());
			}
		}

		System.out.println("**** FIM DE JOGO! ****");
		if (maoMesa.valor() == maoJogador.valor()) {
			System.out.println("Houve empate!");
			MesaWins(maoJogador, maoMesa);
		} else if (maoMesa.valor() > 21) {
			System.out.println("Mesa estourou!");
			MesaWins(maoJogador, maoMesa);
		} else if (maoJogador.valor() > 21) {
			System.out.println("JOGADOR estourou!");
			JogadorWins(maoJogador, maoMesa);
		} else if (maoJogador.valor() == 21
				|| maoMesa.valor() < maoJogador.valor()) {
			JogadorWins(maoJogador, maoMesa);
		} else if (maoMesa.valor() == 21
				|| maoMesa.valor() > maoJogador.valor()) {
			MesaWins(maoJogador, maoMesa);
		}
	}

	/**
	 * Exibe que a Mesa venceu, mostrando as cartas e a pontuacao de cada mao.
	 */
	public static void MesaWins(Mao maoJogador, Mao maoMesa) {
		System.out.println("MESA venceu.");
		System.out.println("Mao do jogador: " + maoJogador.toString());
		System.out.println("Pontuacao do jogador: " + maoJogador.valor());
		System.out.println("Mao da mesa: " + maoMesa.toString());
		System.out.println("Pontuacao da mesa: " + maoMesa.valor());
	}

	/**
	 * Exibe que o Jogador venceu, mostrando as cartas e a pontuacao de cada
	 * mao.
	 */
	public static void JogadorWins(Mao maoJogador, Mao maoMesa) {
		System.out.println("JOGADOR venceu!");
		System.out.println("Mao do jogador: " + maoJogador.toString());
		System.out.println("Pontuacao do jogador: " + maoJogador.valor());
		System.out.println("Mao da mesa: " + maoMesa.toString());
		System.out.println("Pontuacao da mesa: " + maoMesa.valor());
	}
}
